草庐IT

LeetCode - 两数之和

全部标签

15. 三数之和

15.三数之和给你一个包含n个整数的数组 nums,判断 nums 中是否存在三个元素a,b,c,使得 a+b+c=0?请你找出所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2:输入:nums=[]输出:[]示例3:输入:nums=[0]输出:[]提示:0-105解题思路要求三元组不同,想到先给数组排序确定第一个值,想到后两个值相加为第一个值得相反数,一个增加,另一个必然减小采用双指针,第二次和第三次循环一同进行每次循环的值大于初始值,并且等于上一次的值,跳出循环来保证值

[Leetcode464]我能赢吗?——状态压缩+dfs

1.题目在"100game"这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和 达到或超过 100的玩家,即为胜者。如果我们将游戏规则改为“玩家 不能 重复使用整数”呢?例如,两个玩家可以轮流从公共整数池中抽取从1到15的整数(不放回),直到累计整数和>=100。给定两个整数 maxChoosableInteger (整数池中可选择的最大数)和 desiredTotal(累计和),若先出手的玩家是否能稳赢则返回 true ,否则返回 false 。假设两位玩家游戏时都表现 最佳 。示例1:输入:maxChoosableInteger=10,desiredTo

leetcode 452. Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球(中等)

一、题目大意标签:贪心https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i]=[xstart,xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为xstart,xend,且满足 xstart ≤x≤xend,则该气球会被引爆 。可以射出的弓箭的数量没有限制。

LeetCode - 整数反转

题目信息源地址:整数反转给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[−2^31, 2^31 −1],就返回0。假设环境不允许存储64位整数(有符号或无符号)。提示信息示例1输入:x=123输出:321示例2输入:x=-123输出:-321示例3输入:x=120输出:21示例4输入:x=0输出:0提示-2^31实现逻辑投机取巧假设这道题目没有环境不允许存储64位整数(有符号或无符号)的限制,其实问题很容易解决,只需要将数字转换成正整数,然后从个位开始反转,最后再根据原始整数的符号来设定结果整数的符号。这种方法的缺陷就是,当数字较大时

[Leetcode464]我能赢吗?——状态压缩+dfs

1.题目在"100game"这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和 达到或超过 100的玩家,即为胜者。如果我们将游戏规则改为“玩家 不能 重复使用整数”呢?例如,两个玩家可以轮流从公共整数池中抽取从1到15的整数(不放回),直到累计整数和>=100。给定两个整数 maxChoosableInteger (整数池中可选择的最大数)和 desiredTotal(累计和),若先出手的玩家是否能稳赢则返回 true ,否则返回 false 。假设两位玩家游戏时都表现 最佳 。示例1:输入:maxChoosableInteger=10,desiredTo

leetcode 452. Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球(中等)

一、题目大意标签:贪心https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i]=[xstart,xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为xstart,xend,且满足 xstart ≤x≤xend,则该气球会被引爆 。可以射出的弓箭的数量没有限制。

LeetCode - 整数反转

题目信息源地址:整数反转给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[−2^31, 2^31 −1],就返回0。假设环境不允许存储64位整数(有符号或无符号)。提示信息示例1输入:x=123输出:321示例2输入:x=-123输出:-321示例3输入:x=120输出:21示例4输入:x=0输出:0提示-2^31实现逻辑投机取巧假设这道题目没有环境不允许存储64位整数(有符号或无符号)的限制,其实问题很容易解决,只需要将数字转换成正整数,然后从个位开始反转,最后再根据原始整数的符号来设定结果整数的符号。这种方法的缺陷就是,当数字较大时

LeetCode - 寻找两个正序数组的中位数

题目信息源地址:寻找两个正序数组的中位数给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为\(O(log(m+n))\)。提示信息示例1输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2输入:nums1=[1,2],nums2=[3,4]输出:2.50000解释:合并数组=[1,2,3,4],中位数(2+3)/2=2.5提示nums1.length==mnums2.length==n001-10^6实现逻辑归并法最先想到的解题方法就是,将两个有序数组合

LeetCode - 寻找两个正序数组的中位数

题目信息源地址:寻找两个正序数组的中位数给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为\(O(log(m+n))\)。提示信息示例1输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2输入:nums1=[1,2],nums2=[3,4]输出:2.50000解释:合并数组=[1,2,3,4],中位数(2+3)/2=2.5提示nums1.length==mnums2.length==n001-10^6实现逻辑归并法最先想到的解题方法就是,将两个有序数组合

LeetCode算法训练-回溯 491.递增子序列 46.全排列 47.全排列 II

欢迎关注个人公众号:爱喝可可牛奶LeetCode算法训练-回溯491.递增子序列46.全排列47.全排列IILeetCode491.递增子序列分析找出并返回所有数组中不同的递增子序列绝对不能先升序绝对不能先升序绝对不能先升序这样会改变原有数组的结构子序列中元素在数组中不一定相邻只要叶子节点,也就是path,一满足条件,直接加入res注意去重used[]数组只针对当前节点的后序节点要在回溯函数中定义画回溯树一看便知代码classSolution{privateLinkedListpath=newLinkedList();privateList>res=newArrayList();publicL